#define _CRT_SECURE_NO_WARNINGS

#include<iostream>
#include<list>
#include<vector>
#include<deque>
using namespace std;

namespace mystack
{
	template<class T, class con = deque<T>>
	class stack
	{
		public:
			bool empty()const
			{
				return _obj.empty();
			}
			size_t size()const
			{
				return _obj.size();
			}
			T& top()
			{
				return _obj.back();
			}
			const T& top() const
			{
				return _obj.back();
			}
			void push(const T& val)
			{
				_obj.push_back(val);
			}
			void pop()
			{
				_obj.pop_back();
			}
			void swap(stack& x)
			{
				_obj.swap(x._obj);
			}
		private:
			con _obj;
	};
}